/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package Controladores;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Erik Zubia
 */
public class Mesa extends ConexionBD {
    
    //Propiedades
    private int idMesa;
    private int capacidadComenzales;
    private int idOrden;
    private int idReservacion;
    private Boolean ocupada;
    
    //Getter and Setter

    public int getIdMesa() {
        return idMesa;
    }

    public void setIdMesa(int idMesa) {
        this.idMesa = idMesa;
    }

    public int getCapacidadComenzales() {
        return capacidadComenzales;
    }

    public void setCapacidadComenzales(int capacidadComenzales) {
        this.capacidadComenzales = capacidadComenzales;
    }

    public int getIdOrden() {
        return idOrden;
    }

    public void setIdOrden(int idOrden) {
        this.idOrden = idOrden;
    }

    public int getIdReservacion() {
        return idReservacion;
    }

    public void setIdReservacion(int idReservacion) {
        this.idReservacion = idReservacion;
    }

    public Boolean getOcupada() {
        return ocupada;
    }

    public void setOcupada(Boolean ocupada) {
        this.ocupada = ocupada;
    }
    
    //Metodos aparte
    public void agregarMesa(String idMesa, String comenzales){
     consulta = "insert into mesa(idMesa, capacidadComezales, ocupada) values ("+idMesa+", "+comenzales+", 0);";
     
        realizarActualizacion(consulta);
    }
    
    public void eliminarMesa(String idMesa){
     consulta = "delete from mesa where idMesa="+idMesa+";";
     
        realizarActualizacion(consulta);
    }
    
    public Boolean comprobarExistencia(String idMesa){
        try {
            super.realizarConexion();
            consulta = "select idMesa from mesa where idMesa="+idMesa+";";
            regreso = realizarConsulta(consulta);
            System.out.println(regreso);
            if(regreso.next()){
                
                return false;
            }else{
                return true;
            }
            
            
        } catch (SQLException ex) {
            Logger.getLogger(Mesa.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }
    
    public ResultSet listarMesas(){
        super.realizarConexion();
        consulta = "select idMesa from mesa;";
        realizarConsulta(consulta);
        return regreso;
    }
    
    public ResultSet mesasDisponibles(String comenzales){
        super.realizarConexion();
        consulta = "select idMesa from mesa where capacidadComezales="+comenzales+" and ocupada=0 ;";
        realizarConsulta(consulta);
        return regreso;
    }
    public ResultSet mesasOcupadas(int dif){
        if(dif==1){
        super.realizarConexion();
        consulta = "select idMesa from mesa where ocupada=1 and idOrden!=0;";
        realizarConsulta(consulta);
        return regreso;
        }else{
        consulta = "select idMesa from mesa where ocupada=1 and idReservacion!=0;";
        realizarConsulta(consulta);
        return regreso;
        }
    }
    public void actualizarMesa(String idMesa, String idCosa, int dif){
        if(dif==1){
        consulta = "Update mesa set idOrden="+idCosa+" where idMesa="+idMesa+";";
        realizarActualizacion(consulta);
        consulta = "Update mesa set Ocupada=1 where idMesa="+idMesa+";";
        realizarActualizacion(consulta);}
    else {
        consulta = "Update mesa set idReservacion="+idCosa+" where idMesa="+idMesa+";";
        realizarActualizacion(consulta);
        consulta = "Update mesa set Ocupada=1 where idMesa="+idMesa+";";
        realizarActualizacion(consulta);
    }
        
   }
    public void desocuparMesa(String idMesa,int dif){
        if(dif==1){
        consulta = "Update mesa set idOrden=null where idMesa="+idMesa+";";
        realizarActualizacion(consulta);
        consulta = "Update mesa set Ocupada=0 where idMesa="+idMesa+";";
        realizarActualizacion(consulta);}
    else {
        consulta = "Update mesa set idReservacion=null where idMesa="+idMesa+";";
        realizarActualizacion(consulta);
        consulta = "Update mesa set Ocupada=0 where idMesa="+idMesa+";";
        realizarActualizacion(consulta);
    }
        
   }
    
    public List<String> getIdMesaList() {
        super.realizarConexion();
        consulta = "select idMesa from mesa where ocupada=1 and idOrden!=0;";
        regreso = super.realizarConsulta(consulta);
        List<String> mesas = new ArrayList<>();
        try {
            while (regreso.next()) {
                String mesa = regreso.getString("idMesa");
                // add group names to the array list
                mesas.add(mesa);
            }
        } catch (SQLException ex) {
            Logger.getLogger(Mesa.class.getName()).log(Level.SEVERE, null, ex);
        }

        try {
            regreso.close();
        } catch (SQLException ex) {
            Logger.getLogger(Mesa.class.getName()).log(Level.SEVERE, null, ex);
        }

        System.out.println(mesas);
        return mesas;
    }
   } 

